//
//  CCYouKeView.swift
//  CC-SinaWeibo
//
//  Created by Chenchen on 16/2/14.
//  Copyright © 2016年 Chenchen. All rights reserved.
//

import UIKit
// 导入SnapKit(捕捉工具包)命名空间
import SnapKit

// 定义协议
@objc protocol CCYouKeViewDelegete:NSObjectProtocol {
    // 声明协议方法,使用 optional(OC中关键字)
    optional func userWillLogin()
    // 注册协议方法
    func userWillRegister()
}

class CCYouKeView: UIView {
    // 声明代理对象,用weak,防止循环引用
    weak var visitorloginViewDelegte:CCYouKeViewDelegete?
    
    // 注册--点击事件的监听方法
    @objc private func registerBtnDidClick() {
        // 使用代理调用协议方法
        visitorloginViewDelegte?.userWillRegister()
    }
    
    // 登录--点击事件的监听方法
    @objc private func loginBtnDidClick() {
        visitorloginViewDelegte?.userWillLogin?()
    }
    
// MARK: 设置外界调用的方法
    func setupUIWithInfo(imageName:String?,tipText:String) {
        // 判断 是否是首页
        if let img = imageName { // 不是首页
            circleIcon.image = UIImage(named: img)
            // 隐藏房子
            largeHouse.hidden = true
            // 圆圈
            bringSubviewToFront(circleIcon)
        } else { // 是首页,就添加动画效果
            startAnimation()
            
        }
        // 说明文字
        tipLabel.text = tipText
    }
    
    // 圆圈动画效果
    func startAnimation() {
        // 基础动画
        let base = CABasicAnimation(keyPath: "transform.rotation")
        // 设置重复的
        base.repeatCount = MAXFLOAT
        // 转动的角度
        base.toValue = 2 * M_PI
        // 持续时间
        base.duration = 15
        // 设置动画完成后,页面失去活跃状态,不移除图层
        base.removedOnCompletion = false
        // 添加动画 
        circleIcon.layer.addAnimation(base, forKey: nil)
        
    }
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        // 调用方法,设置UI
        setupUI()
    }
    
// MARK: 默认手写代码,会实现报错,当程序员通过sd/xib加载该视图,程序就会崩溃
    required init?(coder aDecoder:NSCoder) {
        fatalError("init(coder:) has not been implemented")
        // 如果要用xib加载,就把下面的代码打开
//        super.init(frame: aDecoder)
    }
    
// MARK: 设置UI
    private func setupUI() {
        // 添加子视图(圆圈图标)
        addSubview(circleIcon)
        // 添加遮住圈圈图片
        addSubview(backView)
        // 添加子视图(大房子)
        addSubview(largeHouse)
        // 添加子视图(提示文本)
        addSubview(tipLabel)
        // 添加注册按钮
        addSubview(loginBtn)
        // 添加登录按钮
        addSubview(registerBtn)
   
        
        // 用框架 设计布局约束
        // 圆圈图标 约束
        circleIcon.snp_makeConstraints { (make) -> Void in
            // 水平居中
            make.centerX.equalTo(self.snp_centerX)
            // 垂直居中
            make.centerY.equalTo(self.snp_centerY).offset(-80)
        }
        
        // 大房子图标 约束
        largeHouse.snp_makeConstraints { (make) -> Void in
            // 以圆圈图标为参考,调整位置
            make.center.equalTo(circleIcon.snp_center)
        }
        // 提示文本 约束
        tipLabel.snp_makeConstraints { (make) -> Void in
            // 水平居中,以圆圈图标为参考
            make.centerX.equalTo(circleIcon)
            // 垂直居中,以圆圈图标为参考上面下移16
            make.top.equalTo(circleIcon.snp_bottom).offset(16)
            // 文本宽度
            make.width.equalTo(255)
            // 强制设置位置,防止页面跳动
            make.height.equalTo(40)
        }
        // 登录按钮 约束
        loginBtn.snp_makeConstraints { (make) -> Void in
            make.right.equalTo(tipLabel.snp_right)  // 右对齐
            make.top.equalTo(tipLabel.snp_bottom).offset(16)  // 垂直对齐,向下16
            make.width.equalTo(100)  // 宽度
            make.height.equalTo(40)  // 高度
        }
        // 注册按钮 约束
        registerBtn.snp_makeConstraints { (make) -> Void in
            make.left.equalTo(tipLabel.snp_left)  // 左对齐
            make.top.equalTo(tipLabel.snp_bottom).offset(16) // 垂直对齐,向下16
            make.width.equalTo(100)  // 宽度
            make.height.equalTo(40)  // 高度
        }
        // 遮罩圈圈图片 约束
        backView.snp_makeConstraints { (make) -> Void in
            make.top.left.right.equalTo(self)  // 上,左,右 约束
            make.bottom.equalTo(registerBtn.snp_bottom)
        }
        
        // 设置背景颜色
        let rgb:CGFloat = 236.0 / 255.0
        self.backgroundColor = UIColor(red: rgb, green: rgb, blue: rgb, alpha: 1)
        
        // 添加点击事件 -- 注册
        registerBtn.addTarget(self, action: "registerBtnDidClick", forControlEvents: .TouchUpInside)
         // 添加点击事件 -- 登录
        loginBtn.addTarget(self, action: "loginBtnDidClick", forControlEvents: .TouchUpInside)
        
    }
    
// MARK: 懒加载子视图
    // 圆圈图标
    lazy var circleIcon:UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_image_smallicon"))
    
    // 房子图标
    lazy var largeHouse:UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_image_house"))
    
    // 遮住圈圈图片
    lazy var backView: UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_mask_smallicon"))

    
    // 提示文本
    lazy var tipLabel:UILabel = UILabel(text: "关注一些人,看看有什么惊喜", fontSize: 14, textColor: UIColor.lightGrayColor())
    // 登录按钮
    private lazy var loginBtn:UIButton = UIButton(backImageName: "common_button_white_disable", title: "登录", textColor: UIColor.darkGrayColor())
    
    // 注册按钮
    private lazy var registerBtn:UIButton = UIButton(backImageName: "common_button_white_disable", title: "注册", textColor: themeColor)
}



























